Queue a draw on the old and new focus widgets, if their defaultness
authorMatthias Clasen <mclasen@redhat.com>
Fri, 17 Jun 2005 17:36:47 +0000 (17:36 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 17 Jun 2005 17:36:47 +0000 (17:36 +0000)
2005-06-17  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkwindow.c (gtk_window_real_set_focus): Queue a
draw on the old and new focus widgets, if their defaultness
changes.  (#305607, Billy Biggs)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-8
gtk/gtkwindow.c

index 1c2a311e24cbd9d9494c028a68288a6aa83013e0..ccf4ee61ab645773d67523857c0f8c2c21580bb3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_real_set_focus): Queue a
+       draw on the old and new focus widgets, if their defaultness
+       changes.  (#305607, Billy Biggs)
+
 2005-06-17  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (validate_visible_area): make sure the row
index 1c2a311e24cbd9d9494c028a68288a6aa83013e0..ccf4ee61ab645773d67523857c0f8c2c21580bb3 100644 (file)
@@ -1,3 +1,9 @@
+2005-06-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_real_set_focus): Queue a
+       draw on the old and new focus widgets, if their defaultness
+       changes.  (#305607, Billy Biggs)
+
 2005-06-17  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (validate_visible_area): make sure the row
index 1c2a311e24cbd9d9494c028a68288a6aa83013e0..ccf4ee61ab645773d67523857c0f8c2c21580bb3 100644 (file)
@@ -1,3 +1,9 @@
+2005-06-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_real_set_focus): Queue a
+       draw on the old and new focus widgets, if their defaultness
+       changes.  (#305607, Billy Biggs)
+
 2005-06-17  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (validate_visible_area): make sure the row
index 8193bb15fbc89a795f6eab0322b76534f41d2ac9..bee9590f2026bc42b8803278e94c6b40844f9f02 100644 (file)
@@ -4695,16 +4695,20 @@ gtk_window_real_set_focus (GtkWindow *window,
 {
   GtkWidget *old_focus = window->focus_widget;
   gboolean had_default = FALSE;
+  gboolean focus_had_default = FALSE;
+  gboolean old_focus_had_default = FALSE;
 
   if (old_focus)
     {
       g_object_ref (old_focus);
       g_object_freeze_notify (G_OBJECT (old_focus));
+      old_focus_had_default = GTK_WIDGET_HAS_DEFAULT (old_focus);
     }
   if (focus)
     {
       g_object_ref (focus);
       g_object_freeze_notify (G_OBJECT (focus));
+      focus_had_default = GTK_WIDGET_HAS_DEFAULT (focus);
     }
   
   if (window->default_widget)
@@ -4716,10 +4720,11 @@ gtk_window_real_set_focus (GtkWindow *window,
          (window->focus_widget != window->default_widget))
         {
          GTK_WIDGET_UNSET_FLAGS (window->focus_widget, GTK_HAS_DEFAULT);
-
+         gtk_widget_queue_draw (window->focus_widget);
+         
          if (window->default_widget)
            GTK_WIDGET_SET_FLAGS (window->default_widget, GTK_HAS_DEFAULT);
-        }
+       }
 
       window->focus_widget = NULL;
 
@@ -4761,14 +4766,20 @@ gtk_window_real_set_focus (GtkWindow *window,
   if (window->default_widget &&
       (had_default != GTK_WIDGET_HAS_DEFAULT (window->default_widget)))
     gtk_widget_queue_draw (window->default_widget);
-
+  
   if (old_focus)
     {
+      if (old_focus_had_default != GTK_WIDGET_HAS_DEFAULT (old_focus))
+       gtk_widget_queue_draw (old_focus);
+       
       g_object_thaw_notify (G_OBJECT (old_focus));
       g_object_unref (old_focus);
     }
   if (focus)
     {
+      if (focus_had_default != GTK_WIDGET_HAS_DEFAULT (focus))
+       gtk_widget_queue_draw (focus);
+
       g_object_thaw_notify (G_OBJECT (focus));
       g_object_unref (focus);
     }